package com.threadmethod.synchronize;

/**
 * @PackageName:com.threadmethod.synchronize
 * @ClassName:test01
 * @Description: synchronize同步静态方法  默认的锁对象是当前类的运行时的类对象
 * @Author: zhangxiaoyu
 * @date 2020/12/8 17:41
 */
public class Test12 {

    public static void main(String[] args) {

        //先创建对象
        Test12 obi = new Test12();

        //一个线程调用mm
        new Thread(new Runnable() {
            @Override
            public void run() {
                obi.m1();  //使用的锁对象this就是obi对象
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {

                Test12.sm2();

            }
        }).start();

    }

    public void m1(){
        //当前类的运行时类对象作为锁对象
        synchronized (Test12.class){
            //经常使用this当前对象作为锁对象
            for(int i=1;i<=100;i++){
                System.out.println(Thread.currentThread().getName()+"---------->"+i);
            }
        }

    }

    //使用synchronized修饰静态方法  默认当前运行时类为锁对象
    public synchronized static void sm2(){

            //经常使用this当前对象作为锁对象
            for(int i=1;i<=100;i++){
                System.out.println(Thread.currentThread().getName()+"---------->"+i);
            }
    }

}
